package com.transaction.simulate.service;


import com.transaction.common.base.PageInfo;
import com.transaction.simulate.model.dto.Account;
import com.transaction.simulate.model.dto.AccountStatus;
import com.transaction.simulate.model.dto.ChannelAccount;
import com.transaction.simulate.model.vo.ChannelAccountVo;

import java.util.List;
import java.util.Map;

public interface AccountService {

    String generateIdentityNo();

    String generatePersonName();

    String generateCompanyName();

    String generateMobile();

    String generateAddress();

    String generateTransActionAccountId();

    String generatePostCode();

    List<Account> getAccountList(int num);

    void generateAccountList(int num);

    void generateChannelAccount(String channelCode,String transDate, List<Account> transAccounts);

    List<Account> getAccount(Account account, PageInfo pageInfo);

    List<ChannelAccount> getChannelAccount(ChannelAccount channelAccount, PageInfo pageInfo);

    void generateChannelAccountFile(String channelCode, String transDate, List<String> dateRange);

    List<Map<String, Object>> getAccountToMap(String channelCode, List<String> dateRange);

    void updateChannelAccount(String channelCode, List<Map<String, Object>> dataList);

    void insertChannelAccount(String channelCode, List<Map<String, Object>> dataList);

    List<ChannelAccountVo> getChannelAccountAvailable(ChannelAccountVo channelAccount, PageInfo pageInfo);

    void deleteAll();

    void deleteChannelAccountAll();

    void generateChannelAccountR1File(String channelCode, String transDate, List<String> dateRange);

    void generateChannelAccountX1File(String channelCode, String transDate, List<String> dateRange);

    void generateChannelAccountX3File(String channelCode, String transDate, List<String> dateRange);

    List<Map<String, Object>> getAccountR1ToMap(String channelCode, List<String> dateRange);

    List<Map<String, Object>> getAccountX1ToMap(String channelCode, List<String> dateRange);

    List<Map<String, Object>> getAccountX3ToMap(String channelCode, List<String> dateRange);

    void handleConfirmChannelAccount(String channelCode, List<Map<String, Object>> dataList);

    List<AccountStatus> getAccountStatus(AccountStatus accountStatus, PageInfo pageInfo);

    void deleteAllAccountStatus(AccountStatus accountStatus);

    void updateAccountStatus(AccountStatus accountStatus);
}
